/******************************************************************
 * This program was written as part of
 *   Assignment 4
 *   Computer Graphics                                             
 *   Semester 1, 2013
 *   School of Computer Science,
 *   The University of Adelaide
 *                                                                          
 * I declare that all material in this assessment is my own work except where
 * there is clear acknowledgement and reference to the work of others. I have
 * read the University Policy Statement on Plagiarism, Collusion and Related
 * Forms of Cheating:  

 * http://www.adelaide.edu.au/policies/?230

 * I give permission for my assessment work, including my subversion
 * repository, to be reproduced and submitted to academic staff for the
 * purposes of assessment and to be copied, submitted and retained in a form
 * suitable for electronic checking of plagiarism.  
                            
 * Authors:
 *  Terry Moschou    a1208955
 *  Salih Al-Rashid  a1210108
 *  Ben McAleer      a1212203
*******************************************************************/

#ifndef SKYBOX_HPP
#define SKYBOX_HPP


#include "Common.hpp"
#include "Object.hpp"
#include "UserInterface.hpp"


class objLoader;
class Material;

class SkyBox : public Object
{
public:
  SkyBox(Object * parent = 0, glm::mat4 skyBoxMatrix = glm::mat4(1.0f));
  virtual void draw(const glm::mat4 & modelMatrix);
private:
  
  objLoader * m_objLoader;
 
  GLuint m_vaoHandle;
  
  enum VboHandle {
    Vertices, Normals, TexCoords, NumVbos
  };
  
  GLuint m_vboHandles[NumVbos];
  
  int m_materialCount;
  Material * m_materials;
  
  GLint m_al_vertex;
  GLint m_al_texCoord;

  GLint m_ul_model;
  GLint m_ul_texMap;
}; 
#endif // SKYBOX_HPP
